聘我网

新概念招聘3.0

怎么使用test或者[ .. ]命令?

vote up0vote downstar
[root@xxx~]# test 1 = 1 -a 0 = 1 
[root@xxx~]# if [1 = 1 -a 0 = 1]then echo 1;else echo 2;fi 
-bash: syntax error near unexpected token `else' 

上面test为何没有返回结果,if语句又报错?

 

1 个答复

vote up0vote downcheck

test的返回结果不会直接输出,需要查看$?0true1false

[ ... ]test ...是等价的,所以[/]前后必须有空格,正如不能写成test1=1而要写成test 1=1

而且if/then属于2个语句,之间需要用换行或者;分隔,所以正确的写法是:

if [ 1 = 1 -a 0 = 1 ];then echo 1;else echo 2; fi

等价地还可以写成:

[ 1 = 1 -a 0 = 1 ] && echo 1 || echo 2

注意test只支持这种简单表达式,对于更复杂的表达式,需要用[[:

[[ 1 = 1 && (0 = 1 || 1 = 1) ]] && echo 1 || echo 2
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.